#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

#include <linux/platform_device.h>

// 设备挂起操作
static int pdrv_suspeed(struct device *dev)
{
    printk("pdev: suspend\n");
    return 0;
}

// 设备恢复操作
static int pdrv_resume(struct device *dev)
{
    printk("pdev: resume\n");
    return 0;
}

static const struct dev_pm_ops pdrv_pm_ops = {
    .suspend = pdrv_suspeed,
    .resume = pdrv_resume,
};

static int pdrv_probe(struct platform_device *pdev)
{
    return 0;
}

static int pdrv_remove(struct platform_device *pdev)
{
    return 0;
}

// 定义了一个平台驱动
struct platform_driver pdrv = {
    .driver = {
        .name = "pdev",  // 与设备一致，进行匹配
        .owner = THIS_MODULE,
        .pm = &pdrv_pm_ops,  // 电源管理函数集合
    },
    .probe = pdrv_probe,
    .remove = pdrv_remove,
};

// 简化模块初始化和卸载函数
module_platform_driver(pdrv);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("KDY <chaoxi_todo@qq.com>");
MODULE_DESCRIPTION("A simple module");
MODULE_ALIAS("virtual-serial");